﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Cryptography;
using System.Text;

namespace Util.Criptografia.MD5
{
    public class criptografiaMD5
    {
        private const string Chave = "worcamentoadmin";  
  
          
        public criptografiaMD5()  
        {  
        }  
          
        public string criptografaSenha(string senhaCripto)  
        {  
            try  
            {  
                TripleDESCryptoServiceProvider objcriptografaSenha = new TripleDESCryptoServiceProvider();  
                MD5CryptoServiceProvider objcriptoMd5 = new MD5CryptoServiceProvider();  
  
                byte[] byteHash, byteBuff;  
                string strTempKey = Chave;  
  
                byteHash = objcriptoMd5.ComputeHash(ASCIIEncoding.ASCII.GetBytes(strTempKey));  
                objcriptoMd5 = null;  
                objcriptografaSenha.Key = byteHash;  
                objcriptografaSenha.Mode = CipherMode.ECB;  
  
                byteBuff = ASCIIEncoding.ASCII.GetBytes(senhaCripto);  
                return Convert.ToBase64String(objcriptografaSenha.CreateEncryptor().TransformFinalBlock(byteBuff, 0, byteBuff.Length));  
            }  
            catch (Exception ex)  
            {  
                return "Digite os valores Corretamente." + ex.Message;  
            }  
        }  
  
          
        public string descriptografaSenha(string strCriptografada)  
        {  
            try  
            {  
                TripleDESCryptoServiceProvider objdescriptografaSenha = new TripleDESCryptoServiceProvider();  
                MD5CryptoServiceProvider objcriptoMd5 = new MD5CryptoServiceProvider();  
  
                byte[] byteHash, byteBuff;  
                string strTempKey = Chave;  
  
                byteHash = objcriptoMd5.ComputeHash(ASCIIEncoding.ASCII.GetBytes(strTempKey));  
                objcriptoMd5 = null;  
                objdescriptografaSenha.Key = byteHash;  
                objdescriptografaSenha.Mode = CipherMode.ECB;  
  
                byteBuff = Convert.FromBase64String(strCriptografada);  
                string strDecrypted = ASCIIEncoding.ASCII.GetString(objdescriptografaSenha.CreateDecryptor().TransformFinalBlock(byteBuff, 0, byteBuff.Length));  
                objdescriptografaSenha = null;  
  
                return strDecrypted;  
            }  
            catch (Exception ex)  
            {  
                return "Digite os valores Corretamente." + ex.Message;  
            }  
        }  
  
        public bool compararStrings(string num01, string num02)  
        {  
            bool stringValor;  
            if (num01.Equals(num02))  
            {  
                stringValor = true;  
            }  
            else  
            {  
                stringValor = false;  
            }  
            return stringValor;  
        } 
    }
}
